Skip to content

接口

微服务调用者接口

异步消息事务开始接口,用于业务操作前 /msg/begin

Method POST
请求:
    tags M list 消息标签列表
    key O str 消息关键词字段,服务保证消息关键词相同的情况下的消息顺序,例如订单消息,关键词可以是订单号`PL12312`,不需要保证事务性时可不传
    body M json 消息内容,不需要差量数据可不传
    body_hash M 消息内容的hash值(用于校验body是否正确)
    topic M str 主题
    serial O str 事务号,用于校验消息实际业务执行情况,每次发消息都要传入一个新生成的随机字符串,不需要保证事务性时可不传
响应:
    code    M   int
    msg     M   string
    data    M   null
    {
        id M int 如果成功的话,返回一个消息 id 用于 commit 接口
    }

注:

  1. tags 提供一个默认层级关系表,此处只需要填最低层级的标签即可,以订单为例:
1级(动作) 2级(元数据) 3级(附属数据/动作)
create_order
edit_order edit_remark
edit_skus add_skus
delete_skus
edit_sku_quantity
weigh
edit_sku_remark
edit_status
edit_receive_time
set_sort_num
delete_order

输入 tag 为 add_skus 时,tags 会补全成 [edit_order, edit_skus, add_skus]

异步消息事务提交接口,用于业务操作后 /msg/commit

Method POST
请求:
    ids M list 消息ID列表

响应:
    code    M   int
    msg     M   string
    data    M   null

异步消息事务提交接口,用于业务操作后 /worker/resize

Method POST
请求:
    subscription_name M string 订阅名
    size M int worker数量

响应:
    code    M   int
    msg     M   string
    data    M   null

rmiclient 接口

异步事务开始 mq_srv.begin

mq_srv.begin(
    topic: str 主题(必传)
    tags: list 标签(必传)
    key: str = None 关键字(可选,需要事务保证的消息传)
    body: dict 内容(必传)
    serial: str = None 事务号(可选,需要事务保证的消息传)
) -> int 返回消息ID

异步事务提交 mq_srv.commit

mq_srv.commit(
    ids: list 消息ID列表(支持批量发送)
) -> None

例子

  1. 需要事务保证的消息
发送订单消息
id = mq_srv.begin(
    topic='order'
    tags=['change_sku_amount'],
    key='PL1231013',
    body={blabla},
    serial='13afa14asd235',
)
修改订单的具体操作
order_srv.edit(...)
mq_srv.commit([id])
  1. 不需要事务保证的消息
发送订单消息
id = mq_srv.begin(
    topic='order',
    tags=['change_sku_amount'],
    body={blabla},
)
修改订单的具体操作
order_srv.edit(...)
mq_srv.commit([id])

回调检查接口规范

url 命名没有要求

Method GET
请求:
    key M str 消息关键词字段
    serial M str 事务号
响应:
    code    M   int
    msg     M   string
    data    M   null
    {
        result M bool 成功返回true,失败返回false
    }
逻辑:
    假如消息的源资源是存放在 mongo 内的,到对应的 mongo 表内查 msg_key 对应 _id 的文档内,serials 这个列表字段里有没有 serial,如果有,就返回true,,没有就 false
    假如消息的源资源是存放在 mysql 内的,到对应设计的 mysql 表内查有没有 serial,如果有,就返回true,,没有就 false

逻辑上,业务在使用mq_srv.begin时要对自身要操作的资源上锁,如果mq_srv.begin失败了,那么业务也将失败,如果mq_srv.begin成功了,那么业务可以继续操作并解锁。

推送接口规范

url没有要求

Method POST
头:
    request_id web 服务的 request_id
cookies:
    group_id 用于灰度
请求:
    消息其他字段
响应:
    code    M   int
    msg     M   string
    data    M   null

    返回状态码200及 code 为 0 认为 消费成功,否则均认为失败